/*
*	Project: Aethon
*
*	File: Eye.h
*
*	Author: Jonathan Hersack
*
*	Date: 2/15/2009
*
*   Purpose: The Eye contains the look at information for the viewpoint and 
*   the wireframe and activity modifier flags.
*/

#ifndef EYE_H_
#define EYE_H_

#include <iostream>
#include "vector3f.h"
#include <GL/glut.h>
#include <math.h>
using namespace std;
const float PI = 3.14159;

class Eye{

    bool isWireframe;
    bool isActive;  
	vector3f lookAt;
	float lookDistance;
	
	public:
	//constructors
	Eye()
	{
	vector3f look(0,0,0);
	setLookAt(look);
	setIsWireframe(false);
	setIsActive(false);}
	Eye(vector3f look)
	{
	setLookAt(look);
	setIsWireframe(false);
	setIsActive(false);
	}//end constructor
	
	//private lookat point functions
	vector3f calcPoints(vector3f angles);

	void update(vector3f modelPosition, vector3f modelDirection);
	vector3f normalizeVector(vector3f vect);
	
	//gets and sets-----------------------------------------------------------   		
	void setIsWireframe(bool wire)
	{
         isWireframe = wire;
    }//end setiswire
    
	bool getIsWireframe()
	{
         return isWireframe;
    }//end getiswire
    
	void setIsActive(bool active)
	{
         isActive = active;
    }//end setiswire
    
	bool getIsActive()
	{
         return isActive;
    }//end getisactive
    
   	void setLookAt(vector3f look)
	{
         lookAt = look;
    }//end setlookat
	
	vector3f getLookAt()
	{
         return lookAt;
    }//end getlookat

	float getLookDistance()
	{
         return lookDistance;
    }//end getlookat    
	
	void setLookDistance(float distance)
	{
        lookDistance = distance;
    }//end getlookat  
};//end class

#endif //EYE_H_

